/*! jPlayer 2.9.2 for jQuery ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */
!function(a, b) {
    "function" == typeof define && define.amd ? define(["jquery"], b) : b("object" == typeof exports ? require("jquery") : a.jQuery ? a.jQuery : a.Zepto)
}(this, function(a, b) {
    a.fn.jPlayer = function(c) {
        var d = "jPlayer"
            , e = "string" == typeof c
            , f = Array.prototype.slice.call(arguments, 1)
            , g = this;
        return c = !e && f.length ? a.extend.apply(null, [!0, c].concat(f)) : c,
            e && "_" === c.charAt(0) ? g : (this.each(e ? function() {
                    var e = a(this).data(d)
                        , h = e && a.isFunction(e[c]) ? e[c].apply(e, f) : e;
                    return h !== e && h !== b ? (g = h,
                        !1) : void 0
                }
                    : function() {
                    var b = a(this).data(d);
                    b ? b.option(c || {}) : a(this).data(d, new a.jPlayer(c,this))
                }
            ),
                g)
    }
        ,
        a.jPlayer = function(b, c) {
            if (arguments.length) {
                this.element = a(c),
                    this.options = a.extend(!0, {}, this.options, b);
                var d = this;
                this.element.bind("remove.jPlayer", function() {
                    d.destroy()
                }),
                    this._init()
            }
        }
        ,
    "function" != typeof a.fn.stop && (a.fn.stop = function() {}
    ),
        a.jPlayer.emulateMethods = "load play pause",
        a.jPlayer.emulateStatus = "src readyState networkState currentTime duration paused ended playbackRate",
        a.jPlayer.emulateOptions = "muted volume",
        a.jPlayer.reservedEvent = "ready flashreset resize repeat error warning",
        a.jPlayer.event = {},
        a.each(["ready", "setmedia", "flashreset", "resize", "repeat", "click", "error", "warning", "loadstart", "progress", "suspend", "abort", "emptied", "stalled", "play", "pause", "loadedmetadata", "loadeddata", "waiting", "playing", "canplay", "canplaythrough", "seeking", "seeked", "timeupdate", "ended", "ratechange", "durationchange", "volumechange"], function() {
            a.jPlayer.event[this] = "jPlayer_" + this
        }),
        a.jPlayer.htmlEvent = ["loadstart", "abort", "emptied", "stalled", "loadedmetadata", "canplay", "canplaythrough"],
        a.jPlayer.pause = function() {
            a.jPlayer.prototype.destroyRemoved(),
                a.each(a.jPlayer.prototype.instances, function(a, b) {
                    b.data("jPlayer").status.srcSet && b.jPlayer("pause")
                })
        }
        ,
        a.jPlayer.timeFormat = {
            showHour: !1,
            showMin: !0,
            showSec: !0,
            padHour: !1,
            padMin: !0,
            padSec: !0,
            sepHour: ":",
            sepMin: ":",
            sepSec: ""
        };
    var c = function() {
        this.init()
    };
    c.prototype = {
        init: function() {
            this.options = {
                timeFormat: a.jPlayer.timeFormat
            }
        },
        time: function(a) {
            a = a && "number" == typeof a ? a : 0;
            var b = new Date(1e3 * a)
                , c = b.getUTCHours()
                , d = this.options.timeFormat.showHour ? b.getUTCMinutes() : b.getUTCMinutes() + 60 * c
                , e = this.options.timeFormat.showMin ? b.getUTCSeconds() : b.getUTCSeconds() + 60 * d
                , f = this.options.timeFormat.padHour && 10 > c ? "0" + c : c
                , g = this.options.timeFormat.padMin && 10 > d ? "0" + d : d
                , h = this.options.timeFormat.padSec && 10 > e ? "0" + e : e
                , i = "";
            return i += this.options.timeFormat.showHour ? f + this.options.timeFormat.sepHour : "",
                i += this.options.timeFormat.showMin ? g + this.options.timeFormat.sepMin : "",
                i += this.options.timeFormat.showSec ? h + this.options.timeFormat.sepSec : ""
        }
    };
    var d = new c;
    a.jPlayer.convertTime = function(a) {
        return d.time(a)
    }
        ,
        a.jPlayer.uaBrowser = function(a) {
            var b = a.toLowerCase()
                , c = /(webkit)[ \/]([\w.]+)/
                , d = /(opera)(?:.*version)?[ \/]([\w.]+)/
                , e = /(msie) ([\w.]+)/
                , f = /(mozilla)(?:.*? rv:([\w.]+))?/
                , g = c.exec(b) || d.exec(b) || e.exec(b) || b.indexOf("compatible") < 0 && f.exec(b) || [];
            return {
                browser: g[1] || "",
                version: g[2] || "0"
            }
        }
        ,
        a.jPlayer.uaPlatform = function(a) {
            var b = a.toLowerCase()
                , c = /(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/
                , d = /(ipad|playbook)/
                , e = /(android)/
                , f = /(mobile)/
                , g = c.exec(b) || []
                , h = d.exec(b) || !f.exec(b) && e.exec(b) || [];
            return g[1] && (g[1] = g[1].replace(/\s/g, "_")),
            {
                platform: g[1] || "",
                tablet: h[1] || ""
            }
        }
        ,
        a.jPlayer.browser = {},
        a.jPlayer.platform = {};
    var e = a.jPlayer.uaBrowser(navigator.userAgent);
    e.browser && (a.jPlayer.browser[e.browser] = !0,
        a.jPlayer.browser.version = e.version);
    var f = a.jPlayer.uaPlatform(navigator.userAgent);
    f.platform && (a.jPlayer.platform[f.platform] = !0,
        a.jPlayer.platform.mobile = !f.tablet,
        a.jPlayer.platform.tablet = !!f.tablet),
        a.jPlayer.getDocMode = function() {
            var b;
            return a.jPlayer.browser.msie && (document.documentMode ? b = document.documentMode : (b = 5,
            document.compatMode && "CSS1Compat" === document.compatMode && (b = 7))),
                b
        }
        ,
        a.jPlayer.browser.documentMode = a.jPlayer.getDocMode(),
        a.jPlayer.nativeFeatures = {
            init: function() {
                var a, b, c, d = document, e = d.createElement("video"), f = {
                    w3c: ["fullscreenEnabled", "fullscreenElement", "requestFullscreen", "exitFullscreen", "fullscreenchange", "fullscreenerror"],
                    moz: ["mozFullScreenEnabled", "mozFullScreenElement", "mozRequestFullScreen", "mozCancelFullScreen", "mozfullscreenchange", "mozfullscreenerror"],
                    webkit: ["", "webkitCurrentFullScreenElement", "webkitRequestFullScreen", "webkitCancelFullScreen", "webkitfullscreenchange", ""],
                    webkitVideo: ["webkitSupportsFullscreen", "webkitDisplayingFullscreen", "webkitEnterFullscreen", "webkitExitFullscreen", "", ""],
                    ms: ["", "msFullscreenElement", "msRequestFullscreen", "msExitFullscreen", "MSFullscreenChange", "MSFullscreenError"]
                }, g = ["w3c", "moz", "webkit", "webkitVideo", "ms"];
                for (this.fullscreen = a = {
                    support: {
                        w3c: !!d[f.w3c[0]],
                        moz: !!d[f.moz[0]],
                        webkit: "function" == typeof d[f.webkit[3]],
                        webkitVideo: "function" == typeof e[f.webkitVideo[2]],
                        ms: "function" == typeof e[f.ms[2]]
                    },
                    used: {}
                },
                         b = 0,
                         c = g.length; c > b; b++) {
                    var h = g[b];
                    if (a.support[h]) {
                        a.spec = h,
                            a.used[h] = !0;
                        break
                    }
                }
                if (a.spec) {
                    var i = f[a.spec];
                    a.api = {
                        fullscreenEnabled: !0,
                        fullscreenElement: function(a) {
                            return a = a ? a : d,
                                a[i[1]]
                        },
                        requestFullscreen: function(a) {
                            return a[i[2]]()
                        },
                        exitFullscreen: function(a) {
                            return a = a ? a : d,
                                a[i[3]]()
                        }
                    },
                        a.event = {
                            fullscreenchange: i[4],
                            fullscreenerror: i[5]
                        }
                } else
                    a.api = {
                        fullscreenEnabled: !1,
                        fullscreenElement: function() {
                            return null
                        },
                        requestFullscreen: function() {},
                        exitFullscreen: function() {}
                    },
                        a.event = {}
            }
        },
        a.jPlayer.nativeFeatures.init(),
        a.jPlayer.focus = null,
        a.jPlayer.keyIgnoreElementNames = "A INPUT TEXTAREA SELECT BUTTON";
    var g = function(b) {
        var c, d = a.jPlayer.focus;
        d && (a.each(a.jPlayer.keyIgnoreElementNames.split(/\s+/g), function(a, d) {
            return b.target.nodeName.toUpperCase() === d.toUpperCase() ? (c = !0,
                !1) : void 0
        }),
        c || a.each(d.options.keyBindings, function(c, e) {
            return e && a.isFunction(e.fn) && ("number" == typeof e.key && b.which === e.key || "string" == typeof e.key && b.key === e.key) ? (b.preventDefault(),
                e.fn(d),
                !1) : void 0
        }))
    };
    a.jPlayer.keys = function(b) {
        var c = "keydown.jPlayer";
        a(document.documentElement).unbind(c),
        b && a(document.documentElement).bind(c, g)
    }
        ,
        a.jPlayer.keys(!0),
        a.jPlayer.prototype = {
            count: 0,
            version: {
                script: "2.9.2",
                needFlash: "2.9.0",
                flash: "unknown"
            },
            options: {
                swfPath: "js",
                solution: "html, flash",
                supplied: "mp3",
                auroraFormats: "wav",
                preload: "metadata",
                volume: .8,
                muted: !1,
                remainingDuration: !1,
                toggleDuration: !1,
                captureDuration: !0,
                playbackRate: 1,
                defaultPlaybackRate: 1,
                minPlaybackRate: .5,
                maxPlaybackRate: 4,
                wmode: "opaque",
                backgroundColor: "#000000",
                cssSelectorAncestor: "#jp_container_1",
                cssSelector: {
                    videoPlay: ".jp-video-play",
                    play: ".jp-play",
                    pause: ".jp-pause",
                    stop: ".jp-stop",
                    seekBar: ".jp-seek-bar",
                    playBar: ".jp-play-bar",
                    mute: ".jp-mute",
                    unmute: ".jp-unmute",
                    volumeBar: ".jp-volume-bar",
                    volumeBarValue: ".jp-volume-bar-value",
                    volumeMax: ".jp-volume-max",
                    playbackRateBar: ".jp-playback-rate-bar",
                    playbackRateBarValue: ".jp-playback-rate-bar-value",
                    currentTime: ".jp-current-time",
                    duration: ".jp-duration",
                    title: ".jp-title",
                    fullScreen: ".jp-full-screen",
                    restoreScreen: ".jp-restore-screen",
                    repeat: ".jp-repeat",
                    repeatOff: ".jp-repeat-off",
                    gui: ".jp-gui",
                    noSolution: ".jp-no-solution"
                },
                stateClass: {
                    playing: "jp-state-playing",
                    seeking: "jp-state-seeking",
                    muted: "jp-state-muted",
                    looped: "jp-state-looped",
                    fullScreen: "jp-state-full-screen",
                    noVolume: "jp-state-no-volume"
                },
                useStateClassSkin: !1,
                autoBlur: !0,
                smoothPlayBar: !1,
                fullScreen: !1,
                fullWindow: !1,
                autohide: {
                    restored: !1,
                    full: !0,
                    fadeIn: 200,
                    fadeOut: 600,
                    hold: 1e3
                },
                loop: !1,
                repeat: function(b) {
                    b.jPlayer.options.loop ? a(this).unbind(".jPlayerRepeat").bind(a.jPlayer.event.ended + ".jPlayer.jPlayerRepeat", function() {
                        a(this).jPlayer("play")
                    }) : a(this).unbind(".jPlayerRepeat")
                },
                nativeVideoControls: {},
                noFullWindow: {
                    msie: /msie [0-6]\./,
                    ipad: /ipad.*?os [0-4]\./,
                    iphone: /iphone/,
                    ipod: /ipod/,
                    android_pad: /android [0-3]\.(?!.*?mobile)/,
                    android_phone: /(?=.*android)(?!.*chrome)(?=.*mobile)/,
                    blackberry: /blackberry/,
                    windows_ce: /windows ce/,
                    iemobile: /iemobile/,
                    webos: /webos/
                },
                noVolume: {
                    ipad: /ipad/,
                    iphone: /iphone/,
                    ipod: /ipod/,
                    android_pad: /android(?!.*?mobile)/,
                    android_phone: /android.*?mobile/,
                    blackberry: /blackberry/,
                    windows_ce: /windows ce/,
                    iemobile: /iemobile/,
                    webos: /webos/,
                    playbook: /playbook/
                },
                timeFormat: {},
                keyEnabled: !1,
                audioFullScreen: !1,
                keyBindings: {
                    play: {
                        key: 80,
                        fn: function(a) {
                            a.status.paused ? a.play() : a.pause()
                        }
                    },
                    fullScreen: {
                        key: 70,
                        fn: function(a) {
                            (a.status.video || a.options.audioFullScreen) && a._setOption("fullScreen", !a.options.fullScreen)
                        }
                    },
                    muted: {
                        key: 77,
                        fn: function(a) {
                            a._muted(!a.options.muted)
                        }
                    },
                    volumeUp: {
                        key: 190,
                        fn: function(a) {
                            a.volume(a.options.volume + .1)
                        }
                    },
                    volumeDown: {
                        key: 188,
                        fn: function(a) {
                            a.volume(a.options.volume - .1)
                        }
                    },
                    loop: {
                        key: 76,
                        fn: function(a) {
                            a._loop(!a.options.loop)
                        }
                    }
                },
                verticalVolume: !1,
                verticalPlaybackRate: !1,
                globalVolume: !1,
                idPrefix: "jp",
                noConflict: "jQuery",
                emulateHtml: !1,
                consoleAlerts: !0,
                errorAlerts: !1,
                warningAlerts: !1
            },
            optionsAudio: {
                size: {
                    width: "0px",
                    height: "0px",
                    cssClass: ""
                },
                sizeFull: {
                    width: "0px",
                    height: "0px",
                    cssClass: ""
                }
            },
            //optionsVideo: {
            //    size: {
            //        width: "90px",
            //        height: "90px",
            //        cssClass: "jp-video-270p"
            //    },
            //    sizeFull: {
            //        width: "100%",
            //        height: "100%",
            //        cssClass: "jp-video-full"
            //    }
            //},
            instances: {},
            status: {
                src: "",
                media: {},
                paused: !0,
                format: {},
                formatType: "",
                waitForPlay: !0,
                waitForLoad: !0,
                srcSet: !1,
                video: !1,
                seekPercent: 0,
                currentPercentRelative: 0,
                currentPercentAbsolute: 0,
                currentTime: 0,
                duration: 0,
                remaining: 0,
                videoWidth: 0,
                videoHeight: 0,
                readyState: 0,
                networkState: 0,
                playbackRate: 1,
                ended: 0
            },
            internal: {
                ready: !1
            },
            solution: {
                html: !0,
                aurora: !0,
                flash: !0
            },
            format: {
                mp3: {
                    codec: "audio/mpeg",
                    flashCanPlay: !0,
                    media: "audio"
                },
                m4a: {
                    codec: 'audio/mp4; codecs="mp4a.40.2"',
                    flashCanPlay: !0,
                    media: "audio"
                },
                m3u8a: {
                    codec: 'application/vnd.apple.mpegurl; codecs="mp4a.40.2"',
                    flashCanPlay: !1,
                    media: "audio"
                },
                m3ua: {
                    codec: "audio/mpegurl",
                    flashCanPlay: !1,
                    media: "audio"
                },
                oga: {
                    codec: 'audio/ogg; codecs="vorbis, opus"',
                    flashCanPlay: !1,
                    media: "audio"
                },
                flac: {
                    codec: "audio/x-flac",
                    flashCanPlay: !1,
                    media: "audio"
                },
                wav: {
                    codec: 'audio/wav; codecs="1"',
                    flashCanPlay: !1,
                    media: "audio"
                },
                webma: {
                    codec: 'audio/webm; codecs="vorbis"',
                    flashCanPlay: !1,
                    media: "audio"
                },
                fla: {
                    codec: "audio/x-flv",
                    flashCanPlay: !0,
                    media: "audio"
                },
                rtmpa: {
                    codec: 'audio/rtmp; codecs="rtmp"',
                    flashCanPlay: !0,
                    media: "audio"
                },
                m4v: {
                    codec: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',
                    flashCanPlay: !0,
                    media: "video"
                },
                m3u8v: {
                    codec: 'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"',
                    flashCanPlay: !1,
                    media: "video"
                },
                m3uv: {
                    codec: "audio/mpegurl",
                    flashCanPlay: !1,
                    media: "video"
                },
                ogv: {
                    codec: 'video/ogg; codecs="theora, vorbis"',
                    flashCanPlay: !1,
                    media: "video"
                },
                webmv: {
                    codec: 'video/webm; codecs="vorbis, vp8"',
                    flashCanPlay: !1,
                    media: "video"
                },
                flv: {
                    codec: "video/x-flv",
                    flashCanPlay: !0,
                    media: "video"
                },
                rtmpv: {
                    codec: 'video/rtmp; codecs="rtmp"',
                    flashCanPlay: !0,
                    media: "video"
                }
            },
            _init: function() {
                var c = this;
                if (this.element.empty(),
                        this.status = a.extend({}, this.status),
                        this.internal = a.extend({}, this.internal),
                        this.options.timeFormat = a.extend({}, a.jPlayer.timeFormat, this.options.timeFormat),
                        this.internal.cmdsIgnored = a.jPlayer.platform.ipad || a.jPlayer.platform.iphone || a.jPlayer.platform.ipod,
                        this.internal.domNode = this.element.get(0),
                    this.options.keyEnabled && !a.jPlayer.focus && (a.jPlayer.focus = this),
                        this.androidFix = {
                            setMedia: !1,
                            play: !1,
                            pause: !1,
                            time: 0 / 0
                        },
                    a.jPlayer.platform.android && (this.options.preload = "auto" !== this.options.preload ? "metadata" : "auto"),
                        this.formats = [],
                        this.solutions = [],
                        this.require = {},
                        this.htmlElement = {},
                        this.html = {},
                        this.html.audio = {},
                        this.html.video = {},
                        this.aurora = {},
                        this.aurora.formats = [],
                        this.aurora.properties = [],
                        this.flash = {},
                        this.css = {},
                        this.css.cs = {},
                        this.css.jq = {},
                        this.ancestorJq = [],
                        this.options.volume = this._limitValue(this.options.volume, 0, 1),
                        a.each(this.options.supplied.toLowerCase().split(","), function(b, d) {
                            var e = d.replace(/^\s+|\s+$/g, "");
                            if (c.format[e]) {
                                var f = !1;
                                a.each(c.formats, function(a, b) {
                                    return e === b ? (f = !0,
                                        !1) : void 0
                                }),
                                f || c.formats.push(e)
                            }
                        }),
                        a.each(this.options.solution.toLowerCase().split(","), function(b, d) {
                            var e = d.replace(/^\s+|\s+$/g, "");
                            if (c.solution[e]) {
                                var f = !1;
                                a.each(c.solutions, function(a, b) {
                                    return e === b ? (f = !0,
                                        !1) : void 0
                                }),
                                f || c.solutions.push(e)
                            }
                        }),
                        a.each(this.options.auroraFormats.toLowerCase().split(","), function(b, d) {
                            var e = d.replace(/^\s+|\s+$/g, "");
                            if (c.format[e]) {
                                var f = !1;
                                a.each(c.aurora.formats, function(a, b) {
                                    return e === b ? (f = !0,
                                        !1) : void 0
                                }),
                                f || c.aurora.formats.push(e)
                            }
                        }),
                        this.internal.instance = "jp_" + this.count,
                        this.instances[this.internal.instance] = this.element,
                    this.element.attr("id") || this.element.attr("id", this.options.idPrefix + "_jplayer_" + this.count),
                        this.internal.self = a.extend({}, {
                            id: this.element.attr("id"),
                            jq: this.element
                        }),
                        this.internal.audio = a.extend({}, {
                            id: this.options.idPrefix + "_audio_" + this.count,
                            jq: b
                        }),
                        this.internal.video = a.extend({}, {
                            id: this.options.idPrefix + "_video_" + this.count,
                            jq: b
                        }),
                        this.internal.flash = a.extend({}, {
                            id: this.options.idPrefix + "_flash_" + this.count,
                            jq: b,
                            swf: this.options.swfPath + (".swf" !== this.options.swfPath.toLowerCase().slice(-4) ? (this.options.swfPath && "/" !== this.options.swfPath.slice(-1) ? "/" : "") + "jquery.jplayer.swf" : "")
                        }),
                        this.internal.poster = a.extend({}, {
                            id: this.options.idPrefix + "_poster_" + this.count,
                            jq: b
                        }),
                        a.each(a.jPlayer.event, function(a, d) {
                            c.options[a] !== b && (c.element.bind(d + ".jPlayer", c.options[a]),
                                c.options[a] = b)
                        }),
                        this.require.audio = !1,
                        this.require.video = !1,
                        a.each(this.formats, function(a, b) {
                            c.require[c.format[b].media] = !0
                        }),
                        this.options = this.require.video ? a.extend(!0, {}, this.optionsVideo, this.options) : a.extend(!0, {}, this.optionsAudio, this.options),
                        //this._setSize(),
                        this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls),
                        this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow),
                        this.status.noVolume = this._uaBlocklist(this.options.noVolume),
                    a.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled && this._fullscreenAddEventListeners(),
                        this._restrictNativeVideoControls(),
                        //this.htmlElement.poster = document.createElement("img"),
                        //this.htmlElement.poster.id = this.internal.poster.id,
                        //this.htmlElement.poster.onload = function() {
                        //    (!c.status.video || c.status.waitForPlay) && c.internal.poster.jq.show()
                        //}
                        //,
                        //this.element.append(this.htmlElement.poster),
                        this.internal.poster.jq = a("#" + this.internal.poster.id),
                        this.internal.poster.jq.css({
                            width: this.status.width,
                            height: this.status.height
                        }),
                        this.internal.poster.jq.hide(),
                        this.internal.poster.jq.bind("click.jPlayer", function() {
                            c._trigger(a.jPlayer.event.click)
                        }),
                        this.html.audio.available = !1,
                    this.require.audio && (this.htmlElement.audio = document.createElement("audio"),
                        this.htmlElement.audio.id = this.internal.audio.id,
                        this.html.audio.available = !!this.htmlElement.audio.canPlayType && this._testCanPlayType(this.htmlElement.audio)),
                        this.html.video.available = !1,
                    this.require.video && (this.htmlElement.video = document.createElement("video"),
                        this.htmlElement.video.id = this.internal.video.id,
                        this.html.video.available = !!this.htmlElement.video.canPlayType && this._testCanPlayType(this.htmlElement.video)),
                        this.flash.available = this._checkForFlash(10.1),
                        this.html.canPlay = {},
                        this.aurora.canPlay = {},
                        this.flash.canPlay = {},
                        a.each(this.formats, function(b, d) {
                            c.html.canPlay[d] = c.html[c.format[d].media].available && "" !== c.htmlElement[c.format[d].media].canPlayType(c.format[d].codec),
                                c.aurora.canPlay[d] = a.inArray(d, c.aurora.formats) > -1,
                                c.flash.canPlay[d] = c.format[d].flashCanPlay && c.flash.available
                        }),
                        this.html.desired = !1,
                        this.aurora.desired = !1,
                        this.flash.desired = !1,
                        a.each(this.solutions, function(b, d) {
                            if (0 === b)
                                c[d].desired = !0;
                            else {
                                var e = !1
                                    , f = !1;
                                a.each(c.formats, function(a, b) {
                                    c[c.solutions[0]].canPlay[b] && ("video" === c.format[b].media ? f = !0 : e = !0)
                                }),
                                    c[d].desired = c.require.audio && !e || c.require.video && !f
                            }
                        }),
                        this.html.support = {},
                        this.aurora.support = {},
                        this.flash.support = {},
                        a.each(this.formats, function(a, b) {
                            c.html.support[b] = c.html.canPlay[b] && c.html.desired,
                                c.aurora.support[b] = c.aurora.canPlay[b] && c.aurora.desired,
                                c.flash.support[b] = c.flash.canPlay[b] && c.flash.desired
                        }),
                        this.html.used = !1,
                        this.aurora.used = !1,
                        this.flash.used = !1,
                        a.each(this.solutions, function(b, d) {
                            a.each(c.formats, function(a, b) {
                                return c[d].support[b] ? (c[d].used = !0,
                                    !1) : void 0
                            })
                        }),
                        this._resetActive(),
                        this._resetGate(),
                        this._cssSelectorAncestor(this.options.cssSelectorAncestor),
                        this.html.used || this.aurora.used || this.flash.used ? this.css.jq.noSolution.length && this.css.jq.noSolution.hide() : (this._error({
                            type: a.jPlayer.error.NO_SOLUTION,
                            context: "{solution:'" + this.options.solution + "', supplied:'" + this.options.supplied + "'}",
                            message: a.jPlayer.errorMsg.NO_SOLUTION,
                            hint: a.jPlayer.errorHint.NO_SOLUTION
                        }),
                        this.css.jq.noSolution.length && this.css.jq.noSolution.show()),
                        this.flash.used) {
                    var d, e = "jQuery=" + encodeURI(this.options.noConflict) + "&id=" + encodeURI(this.internal.self.id) + "&vol=" + this.options.volume + "&muted=" + this.options.muted;
                    if (a.jPlayer.browser.msie && (Number(a.jPlayer.browser.version) < 9 || a.jPlayer.browser.documentMode < 9)) {
                        var f = '<object id="' + this.internal.flash.id + '" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="0" height="0" tabindex="-1"></object>'
                            , g = ['<param name="movie" value="' + this.internal.flash.swf + '" />', '<param name="FlashVars" value="' + e + '" />', '<param name="allowScriptAccess" value="always" />', '<param name="bgcolor" value="' + this.options.backgroundColor + '" />', '<param name="wmode" value="' + this.options.wmode + '" />'];
                        d = document.createElement(f);
                        for (var h = 0; h < g.length; h++)
                            d.appendChild(document.createElement(g[h]))
                    } else {
                        var i = function(a, b, c) {
                            var d = document.createElement("param");
                            d.setAttribute("name", b),
                                d.setAttribute("value", c),
                                a.appendChild(d)
                        };
                        d = document.createElement("object"),
                            d.setAttribute("id", this.internal.flash.id),
                            d.setAttribute("name", this.internal.flash.id),
                            d.setAttribute("data", this.internal.flash.swf),
                            d.setAttribute("type", "application/x-shockwave-flash"),
                            d.setAttribute("width", "1"),
                            d.setAttribute("height", "1"),
                            d.setAttribute("tabindex", "-1"),
                            i(d, "flashvars", e),
                            i(d, "allowscriptaccess", "always"),
                            i(d, "bgcolor", this.options.backgroundColor),
                            i(d, "wmode", this.options.wmode)
                    }
                    this.element.append(d),
                        this.internal.flash.jq = a(d)
                }
                this.status.playbackRateEnabled = this.html.used && !this.flash.used ? this._testPlaybackRate("audio") : !1,
                    this._updatePlaybackRate(),
                this.html.used && (this.html.audio.available && (this._addHtmlEventListeners(this.htmlElement.audio, this.html.audio),
                    this.element.append(this.htmlElement.audio),
                    this.internal.audio.jq = a("#" + this.internal.audio.id)),
                this.html.video.available && (this._addHtmlEventListeners(this.htmlElement.video, this.html.video),
                    this.element.append(this.htmlElement.video),
                    this.internal.video.jq = a("#" + this.internal.video.id),
                    this.internal.video.jq.css(this.status.nativeVideoControls ? {
                        width: this.status.width,
                        height: this.status.height
                    } : {
                        width: "0px",
                        height: "0px"
                    }),
                    this.internal.video.jq.bind("click.jPlayer", function() {
                        c._trigger(a.jPlayer.event.click)
                    }))),
                    this.aurora.used,
                this.options.emulateHtml && this._emulateHtmlBridge(),
                !this.html.used && !this.aurora.used || this.flash.used || setTimeout(function() {
                    c.internal.ready = !0,
                        c.version.flash = "n/a",
                        c._trigger(a.jPlayer.event.repeat),
                        c._trigger(a.jPlayer.event.ready)
                }, 100),
                    this._updateNativeVideoControls(),
                this.css.jq.videoPlay.length && this.css.jq.videoPlay.hide(),
                    a.jPlayer.prototype.count++
            },
            destroy: function() {
                this.clearMedia(),
                    this._removeUiClass(),
                this.css.jq.currentTime.length && this.css.jq.currentTime.text(""),
                this.css.jq.duration.length && this.css.jq.duration.text(""),
                    a.each(this.css.jq, function(a, b) {
                        b.length && b.unbind(".jPlayer")
                    }),
                    this.internal.poster.jq.unbind(".jPlayer"),
                this.internal.video.jq && this.internal.video.jq.unbind(".jPlayer"),
                    this._fullscreenRemoveEventListeners(),
                this === a.jPlayer.focus && (a.jPlayer.focus = null),
                this.options.emulateHtml && this._destroyHtmlBridge(),
                    this.element.removeData("jPlayer"),
                    this.element.unbind(".jPlayer"),
                    this.element.empty(),
                    delete this.instances[this.internal.instance]
            },
            destroyRemoved: function() {
                var b = this;
                a.each(this.instances, function(a, c) {
                    b.element !== c && (c.data("jPlayer") || (c.jPlayer("destroy"),
                        delete b.instances[a]))
                })
            },
            enable: function() {},
            disable: function() {},
            _testCanPlayType: function(a) {
                try {
                    return a.canPlayType(this.format.mp3.codec),
                        !0
                } catch (b) {
                    return !1
                }
            },
            _testPlaybackRate: function(a) {
                var b, c = .5;
                a = "string" == typeof a ? a : "audio",
                    b = document.createElement(a);
                try {
                    return "playbackRate"in b ? (b.playbackRate = c,
                    b.playbackRate === c) : !1
                } catch (d) {
                    return !1
                }
            },
            _uaBlocklist: function(b) {
                var c = navigator.userAgent.toLowerCase()
                    , d = !1;
                return a.each(b, function(a, b) {
                    return b && b.test(c) ? (d = !0,
                        !1) : void 0
                }),
                    d
            },
            _restrictNativeVideoControls: function() {
                this.require.audio && this.status.nativeVideoControls && (this.status.nativeVideoControls = !1,
                    this.status.noFullWindow = !0)
            },
            _updateNativeVideoControls: function() {
                this.html.video.available && this.html.used && (this.htmlElement.video.controls = this.status.nativeVideoControls,
                    this._updateAutohide(),
                    this.status.nativeVideoControls && this.require.video ? (this.internal.poster.jq.hide(),
                        this.internal.video.jq.css({
                            width: this.status.width,
                            height: this.status.height
                        })) : this.status.waitForPlay && this.status.video && (this.internal.poster.jq.show(),
                        this.internal.video.jq.css({
                            width: "0px",
                            height: "0px"
                        })))
            },
            _addHtmlEventListeners: function(b, c) {
                var d = this;
                b.preload = this.options.preload,
                    b.muted = this.options.muted,
                    b.volume = this.options.volume,
                this.status.playbackRateEnabled && (b.defaultPlaybackRate = this.options.defaultPlaybackRate,
                    b.playbackRate = this.options.playbackRate),
                    b.addEventListener("progress", function() {
                        c.gate && (d.internal.cmdsIgnored && this.readyState > 0 && (d.internal.cmdsIgnored = !1),
                            d._getHtmlStatus(b),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.progress))
                    }, !1),
                    b.addEventListener("loadeddata", function() {
                        c.gate && (d.androidFix.setMedia = !1,
                        d.androidFix.play && (d.androidFix.play = !1,
                            d.play(d.androidFix.time)),
                        d.androidFix.pause && (d.androidFix.pause = !1,
                            d.pause(d.androidFix.time)),
                            d._trigger(a.jPlayer.event.loadeddata))
                    }, !1),
                    b.addEventListener("timeupdate", function() {
                        c.gate && (d._getHtmlStatus(b),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.timeupdate))
                    }, !1),
                    b.addEventListener("durationchange", function() {
                        c.gate && (d._getHtmlStatus(b),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.durationchange))
                    }, !1),
                    b.addEventListener("play", function() {
                        c.gate && (d._updateButtons(!0),
                            d._html_checkWaitForPlay(),
                            d._trigger(a.jPlayer.event.play))
                    }, !1),
                    b.addEventListener("playing", function() {
                        c.gate && (d._updateButtons(!0),
                            d._seeked(),
                            d._trigger(a.jPlayer.event.playing))
                    }, !1),
                    b.addEventListener("pause", function() {
                        c.gate && (d._updateButtons(!1),
                            d._trigger(a.jPlayer.event.pause))
                    }, !1),
                    b.addEventListener("waiting", function() {
                        c.gate && (d._seeking(),
                            d._trigger(a.jPlayer.event.waiting))
                    }, !1),
                    b.addEventListener("seeking", function() {
                        c.gate && (d._seeking(),
                            d._trigger(a.jPlayer.event.seeking))
                    }, !1),
                    b.addEventListener("seeked", function() {
                        c.gate && (d._seeked(),
                            d._trigger(a.jPlayer.event.seeked))
                    }, !1),
                    b.addEventListener("volumechange", function() {
                        c.gate && (d.options.volume = b.volume,
                            d.options.muted = b.muted,
                            d._updateMute(),
                            d._updateVolume(),
                            d._trigger(a.jPlayer.event.volumechange))
                    }, !1),
                    b.addEventListener("ratechange", function() {
                        c.gate && (d.options.defaultPlaybackRate = b.defaultPlaybackRate,
                            d.options.playbackRate = b.playbackRate,
                            d._updatePlaybackRate(),
                            d._trigger(a.jPlayer.event.ratechange))
                    }, !1),
                    b.addEventListener("suspend", function() {
                        c.gate && (d._seeked(),
                            d._trigger(a.jPlayer.event.suspend))
                    }, !1),
                    b.addEventListener("ended", function() {
                        c.gate && (a.jPlayer.browser.webkit || (d.htmlElement.media.currentTime = 0),
                            d.htmlElement.media.pause(),
                            d._updateButtons(!1),
                            d._getHtmlStatus(b, !0),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.ended))
                    }, !1),
                    b.addEventListener("error", function() {
                        c.gate && (d._updateButtons(!1),
                            d._seeked(),
                        d.status.srcSet && (clearTimeout(d.internal.htmlDlyCmdId),
                            d.status.waitForLoad = !0,
                            d.status.waitForPlay = !0,
                        d.status.video && !d.status.nativeVideoControls && d.internal.video.jq.css({
                            width: "0px",
                            height: "0px"
                        }),
                        d._validString(d.status.media.poster) && !d.status.nativeVideoControls && d.internal.poster.jq.show(),
                        d.css.jq.videoPlay.length && d.css.jq.videoPlay.show(),
                            d._error({
                                type: a.jPlayer.error.URL,
                                context: d.status.src,
                                message: a.jPlayer.errorMsg.URL,
                                hint: a.jPlayer.errorHint.URL
                            })))
                    }, !1),
                    a.each(a.jPlayer.htmlEvent, function(e, f) {
                        b.addEventListener(this, function() {
                            c.gate && d._trigger(a.jPlayer.event[f])
                        }, !1)
                    })
            },
            _addAuroraEventListeners: function(b, c) {
                var d = this;
                b.volume = 100 * this.options.volume,
                    b.on("progress", function() {
                        c.gate && (d.internal.cmdsIgnored && this.readyState > 0 && (d.internal.cmdsIgnored = !1),
                            d._getAuroraStatus(b),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.progress),
                        b.duration > 0 && d._trigger(a.jPlayer.event.timeupdate))
                    }, !1),
                    b.on("ready", function() {
                        c.gate && d._trigger(a.jPlayer.event.loadeddata)
                    }, !1),
                    b.on("duration", function() {
                        c.gate && (d._getAuroraStatus(b),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.durationchange))
                    }, !1),
                    b.on("end", function() {
                        c.gate && (d._updateButtons(!1),
                            d._getAuroraStatus(b, !0),
                            d._updateInterface(),
                            d._trigger(a.jPlayer.event.ended))
                    }, !1),
                    b.on("error", function() {
                        c.gate && (d._updateButtons(!1),
                            d._seeked(),
                        d.status.srcSet && (d.status.waitForLoad = !0,
                            d.status.waitForPlay = !0,
                        d.status.video && !d.status.nativeVideoControls && d.internal.video.jq.css({
                            width: "0px",
                            height: "0px"
                        }),
                        d._validString(d.status.media.poster) && !d.status.nativeVideoControls && d.internal.poster.jq.show(),
                        d.css.jq.videoPlay.length && d.css.jq.videoPlay.show(),
                            d._error({
                                type: a.jPlayer.error.URL,
                                context: d.status.src,
                                message: a.jPlayer.errorMsg.URL,
                                hint: a.jPlayer.errorHint.URL
                            })))
                    }, !1)
            },
            _getHtmlStatus: function(a, b) {
                var c = 0
                    , d = 0
                    , e = 0
                    , f = 0;
                isFinite(a.duration) && (this.status.duration = a.duration),
                    c = a.currentTime,
                    d = this.status.duration > 0 ? 100 * c / this.status.duration : 0,
                    "object" == typeof a.seekable && a.seekable.length > 0 ? (e = this.status.duration > 0 ? 100 * a.seekable.end(a.seekable.length - 1) / this.status.duration : 100,
                        f = this.status.duration > 0 ? 100 * a.currentTime / a.seekable.end(a.seekable.length - 1) : 0) : (e = 100,
                        f = d),
                b && (c = 0,
                    f = 0,
                    d = 0),
                    this.status.seekPercent = e,
                    this.status.currentPercentRelative = f,
                    this.status.currentPercentAbsolute = d,
                    this.status.currentTime = c,
                    this.status.remaining = this.status.duration - this.status.currentTime,
                    this.status.videoWidth = a.videoWidth,
                    this.status.videoHeight = a.videoHeight,
                    this.status.readyState = a.readyState,
                    this.status.networkState = a.networkState,
                    this.status.playbackRate = a.playbackRate,
                    this.status.ended = a.ended
            },
            _getAuroraStatus: function(a, b) {
                var c = 0
                    , d = 0
                    , e = 0
                    , f = 0;
                this.status.duration = a.duration / 1e3,
                    c = a.currentTime / 1e3,
                    d = this.status.duration > 0 ? 100 * c / this.status.duration : 0,
                    a.buffered > 0 ? (e = this.status.duration > 0 ? a.buffered * this.status.duration / this.status.duration : 100,
                        f = this.status.duration > 0 ? c / (a.buffered * this.status.duration) : 0) : (e = 100,
                        f = d),
                b && (c = 0,
                    f = 0,
                    d = 0),
                    this.status.seekPercent = e,
                    this.status.currentPercentRelative = f,
                    this.status.currentPercentAbsolute = d,
                    this.status.currentTime = c,
                    this.status.remaining = this.status.duration - this.status.currentTime,
                    this.status.readyState = 4,
                    this.status.networkState = 0,
                    this.status.playbackRate = 1,
                    this.status.ended = !1
            },
            _resetStatus: function() {
                this.status = a.extend({}, this.status, a.jPlayer.prototype.status)
            },
            _trigger: function(b, c, d) {
                var e = a.Event(b);
                e.jPlayer = {},
                    e.jPlayer.version = a.extend({}, this.version),
                    e.jPlayer.options = a.extend(!0, {}, this.options),
                    e.jPlayer.status = a.extend(!0, {}, this.status),
                    e.jPlayer.html = a.extend(!0, {}, this.html),
                    e.jPlayer.aurora = a.extend(!0, {}, this.aurora),
                    e.jPlayer.flash = a.extend(!0, {}, this.flash),
                c && (e.jPlayer.error = a.extend({}, c)),
                d && (e.jPlayer.warning = a.extend({}, d)),
                    this.element.trigger(e)
            },
            jPlayerFlashEvent: function(b, c) {
                if (b === a.jPlayer.event.ready)
                    if (this.internal.ready) {
                        if (this.flash.gate) {
                            if (this.status.srcSet) {
                                var d = this.status.currentTime
                                    , e = this.status.paused;
                                this.setMedia(this.status.media),
                                    this.volumeWorker(this.options.volume),
                                d > 0 && (e ? this.pause(d) : this.play(d))
                            }
                            this._trigger(a.jPlayer.event.flashreset)
                        }
                    } else
                        this.internal.ready = !0,
                            this.internal.flash.jq.css({
                                width: "0px",
                                height: "0px"
                            }),
                            this.version.flash = c.version,
                        this.version.needFlash !== this.version.flash && this._error({
                            type: a.jPlayer.error.VERSION,
                            context: this.version.flash,
                            message: a.jPlayer.errorMsg.VERSION + this.version.flash,
                            hint: a.jPlayer.errorHint.VERSION
                        }),
                            this._trigger(a.jPlayer.event.repeat),
                            this._trigger(b);
                if (this.flash.gate)
                    switch (b) {
                        case a.jPlayer.event.progress:
                            this._getFlashStatus(c),
                                this._updateInterface(),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.timeupdate:
                            this._getFlashStatus(c),
                                this._updateInterface(),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.play:
                            this._seeked(),
                                this._updateButtons(!0),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.pause:
                            this._updateButtons(!1),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.ended:
                            this._updateButtons(!1),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.click:
                            this._trigger(b);
                            break;
                        case a.jPlayer.event.error:
                            this.status.waitForLoad = !0,
                                this.status.waitForPlay = !0,
                            this.status.video && this.internal.flash.jq.css({
                                width: "0px",
                                height: "0px"
                            }),
                            this._validString(this.status.media.poster) && this.internal.poster.jq.show(),
                            this.css.jq.videoPlay.length && this.status.video && this.css.jq.videoPlay.show(),
                                this.status.video ? this._flash_setVideo(this.status.media) : this._flash_setAudio(this.status.media),
                                this._updateButtons(!1),
                                this._error({
                                    type: a.jPlayer.error.URL,
                                    context: c.src,
                                    message: a.jPlayer.errorMsg.URL,
                                    hint: a.jPlayer.errorHint.URL
                                });
                            break;
                        case a.jPlayer.event.seeking:
                            this._seeking(),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.seeked:
                            this._seeked(),
                                this._trigger(b);
                            break;
                        case a.jPlayer.event.ready:
                            break;
                        default:
                            this._trigger(b)
                    }
                return !1
            },
            _getFlashStatus: function(a) {
                this.status.seekPercent = a.seekPercent,
                    this.status.currentPercentRelative = a.currentPercentRelative,
                    this.status.currentPercentAbsolute = a.currentPercentAbsolute,
                    this.status.currentTime = a.currentTime,
                    this.status.duration = a.duration,
                    this.status.remaining = a.duration - a.currentTime,
                    this.status.videoWidth = a.videoWidth,
                    this.status.videoHeight = a.videoHeight,
                    this.status.readyState = 4,
                    this.status.networkState = 0,
                    this.status.playbackRate = 1,
                    this.status.ended = !1
            },
            _updateButtons: function(a) {
                a === b ? a = !this.status.paused : this.status.paused = !a,
                    a ? this.addStateClass("playing") : this.removeStateClass("playing"),
                    !this.status.noFullWindow && this.options.fullWindow ? this.addStateClass("fullScreen") : this.removeStateClass("fullScreen"),
                    this.options.loop ? this.addStateClass("looped") : this.removeStateClass("looped"),
                this.css.jq.play.length && this.css.jq.pause.length && (a ? (this.css.jq.play.hide(),
                    this.css.jq.pause.show()) : (this.css.jq.play.show(),
                    this.css.jq.pause.hide())),
                this.css.jq.restoreScreen.length && this.css.jq.fullScreen.length && (this.status.noFullWindow ? (this.css.jq.fullScreen.hide(),
                    this.css.jq.restoreScreen.hide()) : this.options.fullWindow ? (this.css.jq.fullScreen.hide(),
                    this.css.jq.restoreScreen.show()) : (this.css.jq.fullScreen.show(),
                    this.css.jq.restoreScreen.hide())),
                this.css.jq.repeat.length && this.css.jq.repeatOff.length && (this.options.loop ? (this.css.jq.repeat.hide(),
                    this.css.jq.repeatOff.show()) : (this.css.jq.repeat.show(),
                    this.css.jq.repeatOff.hide()))
            },
            _updateInterface: function() {
                this.css.jq.seekBar.length && this.css.jq.seekBar.width(this.status.seekPercent + "%"),
                this.css.jq.playBar.length && (this.options.smoothPlayBar ? this.css.jq.playBar.stop().animate({
                    width: this.status.currentPercentAbsolute + "%"
                }, 250, "linear") : this.css.jq.playBar.width(this.status.currentPercentRelative + "%"));
                var a = "";
                this.css.jq.currentTime.length && (a = this._convertTime(this.status.currentTime),
                a !== this.css.jq.currentTime.text() && this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)));
                var b = ""
                    , c = this.status.duration
                    , d = this.status.remaining;
                this.css.jq.duration.length && ("string" == typeof this.status.media.duration ? b = this.status.media.duration : ("number" == typeof this.status.media.duration && (c = this.status.media.duration,
                    d = c - this.status.currentTime),
                    b = this.options.remainingDuration ? (d > 0 ? "-" : "") + this._convertTime(d) : this._convertTime(c)),
                b !== this.css.jq.duration.text() && this.css.jq.duration.text(b))
            },
            _convertTime: c.prototype.time,
            _seeking: function() {
                this.css.jq.seekBar.length && this.css.jq.seekBar.addClass("jp-seeking-bg"),
                    this.addStateClass("seeking")
            },
            _seeked: function() {
                this.css.jq.seekBar.length && this.css.jq.seekBar.removeClass("jp-seeking-bg"),
                    this.removeStateClass("seeking")
            },
            _resetGate: function() {
                this.html.audio.gate = !1,
                    this.html.video.gate = !1,
                    this.aurora.gate = !1,
                    this.flash.gate = !1
            },
            _resetActive: function() {
                this.html.active = !1,
                    this.aurora.active = !1,
                    this.flash.active = !1
            },
            _escapeHtml: function(a) {
                return a.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&quot;")
            },
            _qualifyURL: function(a) {
                var b = document.createElement("div");
                return b.innerHTML = '<a href="' + this._escapeHtml(a) + '">x</a>',
                    b.firstChild.href
            },
            _absoluteMediaUrls: function(b) {
                var c = this;
                return a.each(b, function(a, d) {
                    d && c.format[a] && "data:" !== d.substr(0, 5) && (b[a] = c._qualifyURL(d))
                }),
                    b
            },
            addStateClass: function(a) {
                this.ancestorJq.length && this.ancestorJq.addClass(this.options.stateClass[a])
            },
            removeStateClass: function(a) {
                this.ancestorJq.length && this.ancestorJq.removeClass(this.options.stateClass[a])
            },
            setMedia: function(b) {
                var c = this
                    , d = !1
                    , e = this.status.media.poster !== b.poster;
                this._resetMedia(),
                    this._resetGate(),
                    this._resetActive(),
                    this.androidFix.setMedia = !1,
                    this.androidFix.play = !1,
                    this.androidFix.pause = !1,
                    b = this._absoluteMediaUrls(b),
                    a.each(this.formats, function(e, f) {
                        var g = "video" === c.format[f].media;
                        return a.each(c.solutions, function(e, h) {
                            if (c[h].support[f] && c._validString(b[f])) {
                                var i = "html" === h
                                    , j = "aurora" === h;
                                return g ? (i ? (c.html.video.gate = !0,
                                    c._html_setVideo(b),
                                    c.html.active = !0) : (c.flash.gate = !0,
                                    c._flash_setVideo(b),
                                    c.flash.active = !0),
                                c.css.jq.videoPlay.length && c.css.jq.videoPlay.show(),
                                    c.status.video = !0) : (i ? (c.html.audio.gate = !0,
                                    c._html_setAudio(b),
                                    c.html.active = !0,
                                a.jPlayer.platform.android && (c.androidFix.setMedia = !0)) : j ? (c.aurora.gate = !0,
                                    c._aurora_setAudio(b),
                                    c.aurora.active = !0) : (c.flash.gate = !0,
                                    c._flash_setAudio(b),
                                    c.flash.active = !0),
                                c.css.jq.videoPlay.length && c.css.jq.videoPlay.hide(),
                                    c.status.video = !1),
                                    d = !0,
                                    !1
                            }
                        }),
                            d ? !1 : void 0
                    }),
                    d ? (this.status.nativeVideoControls && this.html.video.gate || this._validString(b.poster),
                    "string" == typeof b.title && (this.css.jq.title.length && this.css.jq.title.html(b.title),
                    this.htmlElement.audio && this.htmlElement.audio.setAttribute("title", b.title),
                    this.htmlElement.video && this.htmlElement.video.setAttribute("title", b.title)),
                        this.status.srcSet = !0,
                        this.status.media = a.extend({}, b),
                        this._updateButtons(!1),
                        this._updateInterface(),
                        this._trigger(a.jPlayer.event.setmedia)) : this._error({
                        type: a.jPlayer.error.NO_SUPPORT,
                        context: "{supplied:'" + this.options.supplied + "'}",
                        message: a.jPlayer.errorMsg.NO_SUPPORT,
                        hint: a.jPlayer.errorHint.NO_SUPPORT
                    })
            },
            _resetMedia: function() {
                this._resetStatus(),
                    this._updateButtons(!1),
                    this._updateInterface(),
                    this._seeked(),
                    this.internal.poster.jq.show(),
                    clearTimeout(this.internal.htmlDlyCmdId),
                    this.html.active ? this._html_resetMedia() : this.aurora.active ? this._aurora_resetMedia() : this.flash.active && this._flash_resetMedia()
            },
            clearMedia: function() {
                this._resetMedia(),
                    this.html.active ? this._html_clearMedia() : this.aurora.active ? this._aurora_clearMedia() : this.flash.active && this._flash_clearMedia(),
                    this._resetGate(),
                    this._resetActive()
            },
            load: function() {
                this.status.srcSet ? this.html.active ? this._html_load() : this.aurora.active ? this._aurora_load() : this.flash.active && this._flash_load() : this._urlNotSetError("load")
            },
            focus: function() {
                this.options.keyEnabled && (a.jPlayer.focus = this)
            },
            play: function(a) {
                var b = "object" == typeof a;
                b && this.options.useStateClassSkin && !this.status.paused ? this.pause(a) : (a = "number" == typeof a ? a : 0 / 0,
                    this.status.srcSet ? (this.focus(),
                        this.html.active ? this._html_play(a) : this.aurora.active ? this._aurora_play(a) : this.flash.active && this._flash_play(a)) : this._urlNotSetError("play"))
            },
            videoPlay: function() {
                this.play()
            },
            pause: function(a) {
                a = "number" == typeof a ? a : 0 / 0,
                    this.status.srcSet ? this.html.active ? this._html_pause(a) : this.aurora.active ? this._aurora_pause(a) : this.flash.active && this._flash_pause(a) : this._urlNotSetError("pause")
            },
            tellOthers: function(b, c) {
                var d = this
                    , e = "function" == typeof c
                    , f = Array.prototype.slice.call(arguments);
                "string" == typeof b && (e && f.splice(1, 1),
                    a.jPlayer.prototype.destroyRemoved(),
                    a.each(this.instances, function() {
                        d.element !== this && (!e || c.call(this.data("jPlayer"), d)) && this.jPlayer.apply(this, f)
                    }))
            },
            pauseOthers: function(a) {
                this.tellOthers("pause", function() {
                    return this.status.srcSet
                }, a)
            },
            stop: function() {
                this.status.srcSet ? this.html.active ? this._html_pause(0) : this.aurora.active ? this._aurora_pause(0) : this.flash.active && this._flash_pause(0) : this._urlNotSetError("stop")
            },
            playHead: function(a) {
                a = this._limitValue(a, 0, 100),
                    this.status.srcSet ? this.html.active ? this._html_playHead(a) : this.aurora.active ? this._aurora_playHead(a) : this.flash.active && this._flash_playHead(a) : this._urlNotSetError("playHead")
            },
            _muted: function(a) {
                this.mutedWorker(a),
                this.options.globalVolume && this.tellOthers("mutedWorker", function() {
                    return this.options.globalVolume
                }, a)
            },
            mutedWorker: function(b) {
                this.options.muted = b,
                this.html.used && this._html_setProperty("muted", b),
                this.aurora.used && this._aurora_mute(b),
                this.flash.used && this._flash_mute(b),
                this.html.video.gate || this.html.audio.gate || (this._updateMute(b),
                    this._updateVolume(this.options.volume),
                    this._trigger(a.jPlayer.event.volumechange))
            },
            mute: function(a) {
                var c = "object" == typeof a;
                c && this.options.useStateClassSkin && this.options.muted ? this._muted(!1) : (a = a === b ? !0 : !!a,
                    this._muted(a))
            },
            unmute: function(a) {
                a = a === b ? !0 : !!a,
                    this._muted(!a)
            },
            _updateMute: function(a) {
                a === b && (a = this.options.muted),
                    a ? this.addStateClass("muted") : this.removeStateClass("muted"),
                this.css.jq.mute.length && this.css.jq.unmute.length && (this.status.noVolume ? (this.css.jq.mute.hide(),
                    this.css.jq.unmute.hide()) : a ? (this.css.jq.mute.hide(),
                    this.css.jq.unmute.show()) : (this.css.jq.mute.show(),
                    this.css.jq.unmute.hide()))
            },
            volume: function(a) {
                this.volumeWorker(a),
                this.options.globalVolume && this.tellOthers("volumeWorker", function() {
                    return this.options.globalVolume
                }, a)
            },
            volumeWorker: function(b) {
                b = this._limitValue(b, 0, 1),
                    this.options.volume = b,
                this.html.used && this._html_setProperty("volume", b),
                this.aurora.used && this._aurora_volume(b),
                this.flash.used && this._flash_volume(b),
                this.html.video.gate || this.html.audio.gate || (this._updateVolume(b),
                    this._trigger(a.jPlayer.event.volumechange))
            },
            volumeBar: function(b) {
                if (this.css.jq.volumeBar.length) {
                    var c = a(b.currentTarget)
                        , d = c.offset()
                        , e = b.pageX - d.left
                        , f = c.width()
                        , g = c.height() - b.pageY + d.top
                        , h = c.height();
                    this.volume(this.options.verticalVolume ? g / h : e / f)
                }
                this.options.muted && this._muted(!1)
            },
            _updateVolume: function(a) {
                a === b && (a = this.options.volume),
                    a = this.options.muted ? 0 : a,
                    this.status.noVolume ? (this.addStateClass("noVolume"),
                    this.css.jq.volumeBar.length && this.css.jq.volumeBar.hide(),
                    this.css.jq.volumeBarValue.length && this.css.jq.volumeBarValue.hide(),
                    this.css.jq.volumeMax.length && this.css.jq.volumeMax.hide()) : (this.removeStateClass("noVolume"),
                    this.css.jq.volumeBar.length && this.css.jq.volumeBar.show(),
                    this.css.jq.volumeBarValue.length && (this.css.jq.volumeBarValue.show(),
                        this.css.jq.volumeBarValue[this.options.verticalVolume ? "height" : "width"](100 * a + "%")),
                    this.css.jq.volumeMax.length && this.css.jq.volumeMax.show())
            },
            volumeMax: function() {
                this.volume(1),
                this.options.muted && this._muted(!1)
            },
            _cssSelectorAncestor: function(b) {
                var c = this;
                this.options.cssSelectorAncestor = b,
                    this._removeUiClass(),
                    this.ancestorJq = b ? a(b) : [],
                b && 1 !== this.ancestorJq.length && this._warning({
                    type: a.jPlayer.warning.CSS_SELECTOR_COUNT,
                    context: b,
                    message: a.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.ancestorJq.length + " found for cssSelectorAncestor.",
                    hint: a.jPlayer.warningHint.CSS_SELECTOR_COUNT
                }),
                    this._addUiClass(),
                    a.each(this.options.cssSelector, function(a, b) {
                        c._cssSelector(a, b)
                    }),
                    this._updateInterface(),
                    this._updateButtons(),
                    this._updateAutohide(),
                    this._updateVolume(),
                    this._updateMute()
            },
            _cssSelector: function(b, c) {
                var d = this;
                if ("string" == typeof c)
                    if (a.jPlayer.prototype.options.cssSelector[b]) {
                        if (this.css.jq[b] && this.css.jq[b].length && this.css.jq[b].unbind(".jPlayer"),
                                this.options.cssSelector[b] = c,
                                this.css.cs[b] = this.options.cssSelectorAncestor + " " + c,
                                this.css.jq[b] = c ? a(this.css.cs[b]) : [],
                            this.css.jq[b].length && this[b]) {
                            var e = function(c) {
                                c.preventDefault(),
                                    d[b](c),
                                    d.options.autoBlur ? a(this).blur() : a(this).focus()
                            };
                            this.css.jq[b].bind("click.jPlayer", e)
                        }
                        c && 1 !== this.css.jq[b].length && this._warning({
                            type: a.jPlayer.warning.CSS_SELECTOR_COUNT,
                            context: this.css.cs[b],
                            message: a.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.css.jq[b].length + " found for " + b + " method.",
                            hint: a.jPlayer.warningHint.CSS_SELECTOR_COUNT
                        })
                    } else
                        this._warning({
                            type: a.jPlayer.warning.CSS_SELECTOR_METHOD,
                            context: b,
                            message: a.jPlayer.warningMsg.CSS_SELECTOR_METHOD,
                            hint: a.jPlayer.warningHint.CSS_SELECTOR_METHOD
                        });
                else
                    this._warning({
                        type: a.jPlayer.warning.CSS_SELECTOR_STRING,
                        context: c,
                        message: a.jPlayer.warningMsg.CSS_SELECTOR_STRING,
                        hint: a.jPlayer.warningHint.CSS_SELECTOR_STRING
                    })
            },
            duration: function(a) {
                this.options.toggleDuration && (this.options.captureDuration && a.stopPropagation(),
                    this._setOption("remainingDuration", !this.options.remainingDuration))
            },
            seekBar: function(b) {
                if (this.css.jq.seekBar.length) {
                    var c = a(b.currentTarget)
                        , d = c.offset()
                        , e = b.pageX - d.left
                        , f = c.width()
                        , g = 100 * e / f;
                    this.playHead(g)
                }
            },
            playbackRate: function(a) {
                this._setOption("playbackRate", a)
            },
            playbackRateBar: function(b) {
                if (this.css.jq.playbackRateBar.length) {
                    var c, d, e = a(b.currentTarget), f = e.offset(), g = b.pageX - f.left, h = e.width(), i = e.height() - b.pageY + f.top, j = e.height();
                    c = this.options.verticalPlaybackRate ? i / j : g / h,
                        d = c * (this.options.maxPlaybackRate - this.options.minPlaybackRate) + this.options.minPlaybackRate,
                        this.playbackRate(d)
                }
            },
            _updatePlaybackRate: function() {
                var a = this.options.playbackRate
                    , b = (a - this.options.minPlaybackRate) / (this.options.maxPlaybackRate - this.options.minPlaybackRate);
                this.status.playbackRateEnabled ? (this.css.jq.playbackRateBar.length && this.css.jq.playbackRateBar.show(),
                this.css.jq.playbackRateBarValue.length && (this.css.jq.playbackRateBarValue.show(),
                    this.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate ? "height" : "width"](100 * b + "%"))) : (this.css.jq.playbackRateBar.length && this.css.jq.playbackRateBar.hide(),
                this.css.jq.playbackRateBarValue.length && this.css.jq.playbackRateBarValue.hide())
            },
            repeat: function(a) {
                var b = "object" == typeof a;
                this._loop(b && this.options.useStateClassSkin && this.options.loop ? !1 : !0)
            },
            repeatOff: function() {
                this._loop(!1)
            },
            _loop: function(b) {
                this.options.loop !== b && (this.options.loop = b,
                    this._updateButtons(),
                    this._trigger(a.jPlayer.event.repeat))
            },
            option: function(c, d) {
                var e = c;
                if (0 === arguments.length)
                    return a.extend(!0, {}, this.options);
                if ("string" == typeof c) {
                    var f = c.split(".");
                    if (d === b) {
                        for (var g = a.extend(!0, {}, this.options), h = 0; h < f.length; h++) {
                            if (g[f[h]] === b)
                                return this._warning({
                                    type: a.jPlayer.warning.OPTION_KEY,
                                    context: c,
                                    message: a.jPlayer.warningMsg.OPTION_KEY,
                                    hint: a.jPlayer.warningHint.OPTION_KEY
                                }),
                                    b;
                            g = g[f[h]]
                        }
                        return g
                    }
                    e = {};
                    for (var i = e, j = 0; j < f.length; j++)
                        j < f.length - 1 ? (i[f[j]] = {},
                            i = i[f[j]]) : i[f[j]] = d
                }
                return this._setOptions(e),
                    this
            },
            _setOptions: function(b) {
                var c = this;
                return a.each(b, function(a, b) {
                    c._setOption(a, b)
                }),
                    this
            },
            _setOption: function(b, c) {
                var d = this;
                switch (b) {
                    case "volume":
                        this.volume(c);
                        break;
                    case "muted":
                        this._muted(c);
                        break;
                    case "globalVolume":
                        this.options[b] = c;
                        break;
                    case "cssSelectorAncestor":
                        this._cssSelectorAncestor(c);
                        break;
                    case "cssSelector":
                        a.each(c, function(a, b) {
                            d._cssSelector(a, b)
                        });
                        break;
                    case "playbackRate":
                        this.options[b] = c = this._limitValue(c, this.options.minPlaybackRate, this.options.maxPlaybackRate),
                        this.html.used && this._html_setProperty("playbackRate", c),
                            this._updatePlaybackRate();
                        break;
                    case "defaultPlaybackRate":
                        this.options[b] = c = this._limitValue(c, this.options.minPlaybackRate, this.options.maxPlaybackRate),
                        this.html.used && this._html_setProperty("defaultPlaybackRate", c),
                            this._updatePlaybackRate();
                        break;
                    case "minPlaybackRate":
                        this.options[b] = c = this._limitValue(c, .1, this.options.maxPlaybackRate - .1),
                            this._updatePlaybackRate();
                        break;
                    case "maxPlaybackRate":
                        this.options[b] = c = this._limitValue(c, this.options.minPlaybackRate + .1, 16),
                            this._updatePlaybackRate();
                        break;
                    case "fullScreen":
                        if (this.options[b] !== c) {
                            var e = a.jPlayer.nativeFeatures.fullscreen.used.webkitVideo;
                            (!e || e && !this.status.waitForPlay) && (e || (this.options[b] = c),
                                c ? this._requestFullscreen() : this._exitFullscreen(),
                            e || this._setOption("fullWindow", c))
                        }
                        break;
                    case "fullWindow":
                        this.options[b] !== c && (this._removeUiClass(),
                            this.options[b] = c,
                            this._refreshSize());
                        break;
                    case "size":
                        this.options.fullWindow || this.options[b].cssClass === c.cssClass || this._removeUiClass(),
                            this.options[b] = a.extend({}, this.options[b], c),
                            this._refreshSize();
                        break;
                    case "sizeFull":
                        this.options.fullWindow && this.options[b].cssClass !== c.cssClass && this._removeUiClass(),
                            this.options[b] = a.extend({}, this.options[b], c),
                            this._refreshSize();
                        break;
                    case "autohide":
                        this.options[b] = a.extend({}, this.options[b], c),
                            this._updateAutohide();
                        break;
                    case "loop":
                        this._loop(c);
                        break;
                    case "remainingDuration":
                        this.options[b] = c,
                            this._updateInterface();
                        break;
                    case "toggleDuration":
                        this.options[b] = c;
                        break;
                    case "nativeVideoControls":
                        this.options[b] = a.extend({}, this.options[b], c),
                            this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls),
                            this._restrictNativeVideoControls(),
                            this._updateNativeVideoControls();
                        break;
                    case "noFullWindow":
                        this.options[b] = a.extend({}, this.options[b], c),
                            this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls),
                            this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow),
                            this._restrictNativeVideoControls(),
                            this._updateButtons();
                        break;
                    case "noVolume":
                        this.options[b] = a.extend({}, this.options[b], c),
                            this.status.noVolume = this._uaBlocklist(this.options.noVolume),
                            this._updateVolume(),
                            this._updateMute();
                        break;
                    case "emulateHtml":
                        this.options[b] !== c && (this.options[b] = c,
                            c ? this._emulateHtmlBridge() : this._destroyHtmlBridge());
                        break;
                    case "timeFormat":
                        this.options[b] = a.extend({}, this.options[b], c);
                        break;
                    case "keyEnabled":
                        this.options[b] = c,
                        c || this !== a.jPlayer.focus || (a.jPlayer.focus = null);
                        break;
                    case "keyBindings":
                        this.options[b] = a.extend(!0, {}, this.options[b], c);
                        break;
                    case "audioFullScreen":
                        this.options[b] = c;
                        break;
                    case "autoBlur":
                        this.options[b] = c
                }
                return this
            },
            _refreshSize: function() {
                this._setSize(),
                    this._addUiClass(),
                    this._updateSize(),
                    this._updateButtons(),
                    this._updateAutohide(),
                    this._trigger(a.jPlayer.event.resize)
            },
            //_setSize: function() {
            //    this.options.fullWindow ? (this.status.width = this.options.sizeFull.width,
            //        this.status.height = this.options.sizeFull.height,
            //        this.status.cssClass = this.options.sizeFull.cssClass) : (this.status.width = this.options.size.width,
            //        this.status.height = this.options.size.height,
            //        this.status.cssClass = this.options.size.cssClass),
            //        this.element.css({
            //            width: this.status.width,
            //            height: this.status.height
            //        })
            //},
            _addUiClass: function() {
                this.ancestorJq.length && this.ancestorJq.addClass(this.status.cssClass)
            },
            _removeUiClass: function() {
                this.ancestorJq.length && this.ancestorJq.removeClass(this.status.cssClass)
            },
            _updateSize: function() {
                this.internal.poster.jq.css({
                    width: this.status.width,
                    height: this.status.height
                }),
                    !this.status.waitForPlay && this.html.active && this.status.video || this.html.video.available && this.html.used && this.status.nativeVideoControls ? this.internal.video.jq.css({
                        width: this.status.width,
                        height: this.status.height
                    }) : !this.status.waitForPlay && this.flash.active && this.status.video && this.internal.flash.jq.css({
                        width: this.status.width,
                        height: this.status.height
                    })
            },
            _updateAutohide: function() {
                var a = this
                    , b = "mousemove.jPlayer"
                    , c = ".jPlayerAutohide"
                    , d = b + c
                    , e = function(b) {
                        var c, d, e = !1;
                        "undefined" != typeof a.internal.mouse ? (c = a.internal.mouse.x - b.pageX,
                            d = a.internal.mouse.y - b.pageY,
                            e = Math.floor(c) > 0 || Math.floor(d) > 0) : e = !0,
                            a.internal.mouse = {
                                x: b.pageX,
                                y: b.pageY
                            },
                        e && a.css.jq.gui.fadeIn(a.options.autohide.fadeIn, function() {
                            clearTimeout(a.internal.autohideId),
                                a.internal.autohideId = setTimeout(function() {
                                    a.css.jq.gui.fadeOut(a.options.autohide.fadeOut)
                                }, a.options.autohide.hold)
                        })
                    };
                this.css.jq.gui.length && (this.css.jq.gui.stop(!0, !0),
                    clearTimeout(this.internal.autohideId),
                    delete this.internal.mouse,
                    this.element.unbind(c),
                    this.css.jq.gui.unbind(c),
                    this.status.nativeVideoControls ? this.css.jq.gui.hide() : this.options.fullWindow && this.options.autohide.full || !this.options.fullWindow && this.options.autohide.restored ? (this.element.bind(d, e),
                        this.css.jq.gui.bind(d, e),
                        this.css.jq.gui.hide()) : this.css.jq.gui.show())
            },
            fullScreen: function(a) {
                var b = "object" == typeof a;
                b && this.options.useStateClassSkin && this.options.fullScreen ? this._setOption("fullScreen", !1) : this._setOption("fullScreen", !0)
            },
            restoreScreen: function() {
                this._setOption("fullScreen", !1)
            },
            _fullscreenAddEventListeners: function() {
                var b = this
                    , c = a.jPlayer.nativeFeatures.fullscreen;
                c.api.fullscreenEnabled && c.event.fullscreenchange && ("function" != typeof this.internal.fullscreenchangeHandler && (this.internal.fullscreenchangeHandler = function() {
                        b._fullscreenchange()
                    }
                ),
                    document.addEventListener(c.event.fullscreenchange, this.internal.fullscreenchangeHandler, !1))
            },
            _fullscreenRemoveEventListeners: function() {
                var b = a.jPlayer.nativeFeatures.fullscreen;
                this.internal.fullscreenchangeHandler && document.removeEventListener(b.event.fullscreenchange, this.internal.fullscreenchangeHandler, !1)
            },
            _fullscreenchange: function() {
                this.options.fullScreen && !a.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement() && this._setOption("fullScreen", !1)
            },
            _requestFullscreen: function() {
                var b = this.ancestorJq.length ? this.ancestorJq[0] : this.element[0]
                    , c = a.jPlayer.nativeFeatures.fullscreen;
                c.used.webkitVideo && (b = this.htmlElement.video),
                c.api.fullscreenEnabled && c.api.requestFullscreen(b)
            },
            _exitFullscreen: function() {
                var b, c = a.jPlayer.nativeFeatures.fullscreen;
                c.used.webkitVideo && (b = this.htmlElement.video),
                c.api.fullscreenEnabled && c.api.exitFullscreen(b)
            },
            _html_initMedia: function(b) {
                var c = a(this.htmlElement.media).empty();
                a.each(b.track || [], function(a, b) {
                    var d = document.createElement("track");
                    d.setAttribute("kind", b.kind ? b.kind : ""),
                        d.setAttribute("src", b.src ? b.src : ""),
                        d.setAttribute("srclang", b.srclang ? b.srclang : ""),
                        d.setAttribute("label", b.label ? b.label : ""),
                    b.def && d.setAttribute("default", b.def),
                        c.append(d)
                }),
                    this.htmlElement.media.src = this.status.src,
                "none" !== this.options.preload && this._html_load(),
                    this._trigger(a.jPlayer.event.timeupdate)
            },
            _html_setFormat: function(b) {
                var c = this;
                a.each(this.formats, function(a, d) {
                    return c.html.support[d] && b[d] ? (c.status.src = b[d],
                        c.status.format[d] = !0,
                        c.status.formatType = d,
                        !1) : void 0
                })
            },
            _html_setAudio: function(a) {
                this._html_setFormat(a),
                    this.htmlElement.media = this.htmlElement.audio,
                    this._html_initMedia(a)
            },
            _html_setVideo: function(a) {
                this._html_setFormat(a),
                this.status.nativeVideoControls && (this.htmlElement.video.poster = this._validString(a.poster) ? a.poster : ""),
                    this.htmlElement.media = this.htmlElement.video,
                    this._html_initMedia(a)
            },
            _html_resetMedia: function() {
                this.htmlElement.media && (this.htmlElement.media.id !== this.internal.video.id || this.status.nativeVideoControls || this.internal.video.jq.css({
                    width: "0px",
                    height: "0px"
                }),
                    this.htmlElement.media.pause())
            },
            _html_clearMedia: function() {
                this.htmlElement.media && (this.htmlElement.media.src = "about:blank",
                    this.htmlElement.media.load())
            },
            _html_load: function() {
                this.status.waitForLoad && (this.status.waitForLoad = !1,
                    this.htmlElement.media.load()),
                    clearTimeout(this.internal.htmlDlyCmdId)
            },
            _html_play: function(a) {
                var b = this
                    , c = this.htmlElement.media;
                if (this.androidFix.pause = !1,
                        this._html_load(),
                        this.androidFix.setMedia)
                    this.androidFix.play = !0,
                        this.androidFix.time = a;
                else if (isNaN(a))
                    c.play();
                else {
                    this.internal.cmdsIgnored && c.play();
                    try {
                        if (c.seekable && !("object" == typeof c.seekable && c.seekable.length > 0))
                            throw 1;
                        c.currentTime = a,
                            c.play()
                    } catch (d) {
                        return void (this.internal.htmlDlyCmdId = setTimeout(function() {
                            b.play(a)
                        }, 250))
                    }
                }
                this._html_checkWaitForPlay()
            },
            _html_pause: function(a) {
                var b = this
                    , c = this.htmlElement.media;
                if (this.androidFix.play = !1,
                        a > 0 ? this._html_load() : clearTimeout(this.internal.htmlDlyCmdId),
                        c.pause(),
                        this.androidFix.setMedia)
                    this.androidFix.pause = !0,
                        this.androidFix.time = a;
                else if (!isNaN(a))
                    try {
                        if (c.seekable && !("object" == typeof c.seekable && c.seekable.length > 0))
                            throw 1;
                        c.currentTime = a
                    } catch (d) {
                        return void (this.internal.htmlDlyCmdId = setTimeout(function() {
                            b.pause(a)
                        }, 250))
                    }
                a > 0 && this._html_checkWaitForPlay()
            },
            _html_playHead: function(a) {
                var b = this
                    , c = this.htmlElement.media;
                this._html_load();
                try {
                    if ("object" == typeof c.seekable && c.seekable.length > 0)
                        c.currentTime = a * c.seekable.end(c.seekable.length - 1) / 100;
                    else {
                        if (!(c.duration > 0) || isNaN(c.duration))
                            throw "e";
                        c.currentTime = a * c.duration / 100
                    }
                } catch (d) {
                    return void (this.internal.htmlDlyCmdId = setTimeout(function() {
                        b.playHead(a)
                    }, 250))
                }
                this.status.waitForLoad || this._html_checkWaitForPlay()
            },
            _html_checkWaitForPlay: function() {
                this.status.waitForPlay && (this.status.waitForPlay = !1,
                this.css.jq.videoPlay.length && this.css.jq.videoPlay.hide(),
                this.status.video && (this.internal.poster.jq.hide(),
                    this.internal.video.jq.css({
                        width: this.status.width,
                        height: this.status.height
                    })))
            },
            _html_setProperty: function(a, b) {
                this.html.audio.available && (this.htmlElement.audio[a] = b),
                this.html.video.available && (this.htmlElement.video[a] = b)
            },
            _aurora_setAudio: function(b) {
                var c = this;
                a.each(this.formats, function(a, d) {
                    return c.aurora.support[d] && b[d] ? (c.status.src = b[d],
                        c.status.format[d] = !0,
                        c.status.formatType = d,
                        !1) : void 0
                }),
                    this.aurora.player = new AV.Player.fromURL(this.status.src),
                    this._addAuroraEventListeners(this.aurora.player, this.aurora),
                "auto" === this.options.preload && (this._aurora_load(),
                    this.status.waitForLoad = !1)
            },
            _aurora_resetMedia: function() {
                this.aurora.player && this.aurora.player.stop()
            },
            _aurora_clearMedia: function() {},
            _aurora_load: function() {
                this.status.waitForLoad && (this.status.waitForLoad = !1,
                    this.aurora.player.preload())
            },
            _aurora_play: function(b) {
                this.status.waitForLoad || isNaN(b) || this.aurora.player.seek(b),
                this.aurora.player.playing || this.aurora.player.play(),
                    this.status.waitForLoad = !1,
                    this._aurora_checkWaitForPlay(),
                    this._updateButtons(!0),
                    this._trigger(a.jPlayer.event.play)
            },
            _aurora_pause: function(b) {
                isNaN(b) || this.aurora.player.seek(1e3 * b),
                    this.aurora.player.pause(),
                b > 0 && this._aurora_checkWaitForPlay(),
                    this._updateButtons(!1),
                    this._trigger(a.jPlayer.event.pause)
            },
            _aurora_playHead: function(a) {
                this.aurora.player.duration > 0 && this.aurora.player.seek(a * this.aurora.player.duration / 100),
                this.status.waitForLoad || this._aurora_checkWaitForPlay()
            },
            _aurora_checkWaitForPlay: function() {
                this.status.waitForPlay && (this.status.waitForPlay = !1)
            },
            _aurora_volume: function(a) {
                this.aurora.player.volume = 100 * a
            },
            _aurora_mute: function(a) {
                a ? (this.aurora.properties.lastvolume = this.aurora.player.volume,
                    this.aurora.player.volume = 0) : this.aurora.player.volume = this.aurora.properties.lastvolume,
                    this.aurora.properties.muted = a
            },
            _flash_setAudio: function(b) {
                var c = this;
                try {
                    a.each(this.formats, function(a, d) {
                        if (c.flash.support[d] && b[d]) {
                            switch (d) {
                                case "m4a":
                                case "fla":
                                    c._getMovie().fl_setAudio_m4a(b[d]);
                                    break;
                                case "mp3":
                                    c._getMovie().fl_setAudio_mp3(b[d]);
                                    break;
                                case "rtmpa":
                                    c._getMovie().fl_setAudio_rtmp(b[d])
                            }
                            return c.status.src = b[d],
                                c.status.format[d] = !0,
                                c.status.formatType = d,
                                !1
                        }
                    }),
                    "auto" === this.options.preload && (this._flash_load(),
                        this.status.waitForLoad = !1)
                } catch (d) {
                    this._flashError(d)
                }
            },
            _flash_setVideo: function(b) {
                var c = this;
                try {
                    a.each(this.formats, function(a, d) {
                        if (c.flash.support[d] && b[d]) {
                            switch (d) {
                                case "m4v":
                                case "flv":
                                    c._getMovie().fl_setVideo_m4v(b[d]);
                                    break;
                                case "rtmpv":
                                    c._getMovie().fl_setVideo_rtmp(b[d])
                            }
                            return c.status.src = b[d],
                                c.status.format[d] = !0,
                                c.status.formatType = d,
                                !1
                        }
                    }),
                    "auto" === this.options.preload && (this._flash_load(),
                        this.status.waitForLoad = !1)
                } catch (d) {
                    this._flashError(d)
                }
            },
            _flash_resetMedia: function() {
                this.internal.flash.jq.css({
                    width: "0px",
                    height: "0px"
                }),
                    this._flash_pause(0 / 0)
            },
            _flash_clearMedia: function() {
                try {
                    this._getMovie().fl_clearMedia()
                } catch (a) {
                    this._flashError(a)
                }
            },
            _flash_load: function() {
                try {
                    this._getMovie().fl_load()
                } catch (a) {
                    this._flashError(a)
                }
                this.status.waitForLoad = !1
            },
            _flash_play: function(a) {
                try {
                    this._getMovie().fl_play(a)
                } catch (b) {
                    this._flashError(b)
                }
                this.status.waitForLoad = !1,
                    this._flash_checkWaitForPlay()
            },
            _flash_pause: function(a) {
                try {
                    this._getMovie().fl_pause(a)
                } catch (b) {
                    this._flashError(b)
                }
                a > 0 && (this.status.waitForLoad = !1,
                    this._flash_checkWaitForPlay())
            },
            _flash_playHead: function(a) {
                try {
                    this._getMovie().fl_play_head(a)
                } catch (b) {
                    this._flashError(b)
                }
                this.status.waitForLoad || this._flash_checkWaitForPlay()
            },
            _flash_checkWaitForPlay: function() {
                this.status.waitForPlay && (this.status.waitForPlay = !1,
                this.css.jq.videoPlay.length && this.css.jq.videoPlay.hide(),
                this.status.video && (this.internal.poster.jq.hide(),
                    this.internal.flash.jq.css({
                        width: this.status.width,
                        height: this.status.height
                    })))
            },
            _flash_volume: function(a) {
                try {
                    this._getMovie().fl_volume(a)
                } catch (b) {
                    this._flashError(b)
                }
            },
            _flash_mute: function(a) {
                try {
                    this._getMovie().fl_mute(a)
                } catch (b) {
                    this._flashError(b)
                }
            },
            _getMovie: function() {
                return document[this.internal.flash.id]
            },
            _getFlashPluginVersion: function() {
                var a, b = 0;
                if (window.ActiveXObject)
                    try {
                        if (a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash")) {
                            var c = a.GetVariable("$version");
                            c && (c = c.split(" ")[1].split(","),
                                b = parseInt(c[0], 10) + "." + parseInt(c[1], 10))
                        }
                    } catch (d) {}
                else
                    navigator.plugins && navigator.mimeTypes.length > 0 && (a = navigator.plugins["Shockwave Flash"],
                    a && (b = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1")));
                return 1 * b
            },
            _checkForFlash: function(a) {
                var b = !1;
                return this._getFlashPluginVersion() >= a && (b = !0),
                    b
            },
            _validString: function(a) {
                return a && "string" == typeof a
            },
            _limitValue: function(a, b, c) {
                return b > a ? b : a > c ? c : a
            },
            _urlNotSetError: function(b) {
                this._error({
                    type: a.jPlayer.error.URL_NOT_SET,
                    context: b,
                    message: a.jPlayer.errorMsg.URL_NOT_SET,
                    hint: a.jPlayer.errorHint.URL_NOT_SET
                })
            },
            _flashError: function(b) {
                var c;
                c = this.internal.ready ? "FLASH_DISABLED" : "FLASH",
                    this._error({
                        type: a.jPlayer.error[c],
                        context: this.internal.flash.swf,
                        message: a.jPlayer.errorMsg[c] + b.message,
                        hint: a.jPlayer.errorHint[c]
                    }),
                    this.internal.flash.jq.css({
                        width: "1px",
                        height: "1px"
                    })
            },
            _error: function(b) {
                this._trigger(a.jPlayer.event.error, b),
                this.options.errorAlerts && this._alert("Error!" + (b.message ? "\n" + b.message : "") + (b.hint ? "\n" + b.hint : "") + "\nContext: " + b.context)
            },
            _warning: function(c) {
                this._trigger(a.jPlayer.event.warning, b, c),
                this.options.warningAlerts && this._alert("Warning!" + (c.message ? "\n" + c.message : "") + (c.hint ? "\n" + c.hint : "") + "\nContext: " + c.context)
            },
            _alert: function(a) {
                var b = "jPlayer " + this.version.script + " : id='" + this.internal.self.id + "' : " + a;
                this.options.consoleAlerts ? window.console && window.console.log && window.console.log(b) : alert(b)
            },
            _emulateHtmlBridge: function() {
                var b = this;
                a.each(a.jPlayer.emulateMethods.split(/\s+/g), function(a, c) {
                    b.internal.domNode[c] = function(a) {
                        b[c](a)
                    }
                }),
                    a.each(a.jPlayer.event, function(c, d) {
                        var e = !0;
                        a.each(a.jPlayer.reservedEvent.split(/\s+/g), function(a, b) {
                            return b === c ? (e = !1,
                                !1) : void 0
                        }),
                        e && b.element.bind(d + ".jPlayer.jPlayerHtml", function() {
                            b._emulateHtmlUpdate();
                            var a = document.createEvent("Event");
                            a.initEvent(c, !1, !0),
                                b.internal.domNode.dispatchEvent(a)
                        })
                    })
            },
            _emulateHtmlUpdate: function() {
                var b = this;
                a.each(a.jPlayer.emulateStatus.split(/\s+/g), function(a, c) {
                    b.internal.domNode[c] = b.status[c]
                }),
                    a.each(a.jPlayer.emulateOptions.split(/\s+/g), function(a, c) {
                        b.internal.domNode[c] = b.options[c]
                    })
            },
            _destroyHtmlBridge: function() {
                var b = this;
                this.element.unbind(".jPlayerHtml");
                var c = a.jPlayer.emulateMethods + " " + a.jPlayer.emulateStatus + " " + a.jPlayer.emulateOptions;
                a.each(c.split(/\s+/g), function(a, c) {
                    delete b.internal.domNode[c]
                })
            }
        },
        a.jPlayer.error = {
            FLASH: "e_flash",
            FLASH_DISABLED: "e_flash_disabled",
            NO_SOLUTION: "e_no_solution",
            NO_SUPPORT: "e_no_support",
            URL: "e_url",
            URL_NOT_SET: "e_url_not_set",
            VERSION: "e_version"
        },
        a.jPlayer.errorMsg = {
            FLASH: "jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",
            FLASH_DISABLED: "jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",
            NO_SOLUTION: "No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",
            NO_SUPPORT: "It is not possible to play any media format provided in setMedia() on this browser using your current options.",
            URL: "Media URL could not be loaded.",
            URL_NOT_SET: "Attempt to issue media playback commands, while no media url is set.",
            VERSION: "jPlayer " + a.jPlayer.prototype.version.script + " needs Jplayer.swf version " + a.jPlayer.prototype.version.needFlash + " but found "
        },
        a.jPlayer.errorHint = {
            FLASH: "Check your swfPath option and that Jplayer.swf is there.",
            FLASH_DISABLED: "Check that you have not display:none; the jPlayer entity or any ancestor.",
            NO_SOLUTION: "Review the jPlayer options: support and supplied.",
            NO_SUPPORT: "Video or audio formats defined in the supplied option are missing.",
            URL: "Check media URL is valid.",
            URL_NOT_SET: "Use setMedia() to set the media URL.",
            VERSION: "Update jPlayer files."
        },
        a.jPlayer.warning = {
            CSS_SELECTOR_COUNT: "e_css_selector_count",
            CSS_SELECTOR_METHOD: "e_css_selector_method",
            CSS_SELECTOR_STRING: "e_css_selector_string",
            OPTION_KEY: "e_option_key"
        },
        a.jPlayer.warningMsg = {
            CSS_SELECTOR_COUNT: "The number of css selectors found did not equal one: ",
            CSS_SELECTOR_METHOD: "The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",
            CSS_SELECTOR_STRING: "The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",
            OPTION_KEY: "The option requested in jPlayer('option') is undefined."
        },
        a.jPlayer.warningHint = {
            CSS_SELECTOR_COUNT: "Check your css selector and the ancestor.",
            CSS_SELECTOR_METHOD: "Check your method name.",
            CSS_SELECTOR_STRING: "Check your css selector is a string.",
            OPTION_KEY: "Check your option name."
        }
});
